package com.demo.java.OD51_100.OD67;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【解压报文 压缩报文还原】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145612584
 */
public class OdMain {
    // 定义正则模式
    public static final Pattern PATTERN = Pattern.compile("(\\d+)\\[([a-z]+)\\]");

    // 解压缩函数
    public static String solveMethod(String inputValues) {
        if (inputValues == null || "".equals(inputValues)) return "";

        // 使用 matcher 查找符合模式的字符串
        Matcher matcher = PATTERN.matcher(inputValues);

        // 如果没有找到符合条件的字符串，直接返回原字符串
        if (!matcher.find()) {
            return inputValues;
        }

        // 获取匹配的字符串
        String group = matcher.group();

        // 获取数字和字母部分
        int counts = Integer.parseInt(matcher.group(1)); // 获取重复次数
        String words = matcher.group(2); // 获取要重复的字符串

        // 生成重复字符串
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < counts; ++i) {
            sb.append(words);
        }

        // 将当前的匹配项替换为展开后的字符串
        String fixed = inputValues.replace(group, sb.toString());

        // 递归调用，处理后续可能存在的匹配项
        return solveMethod(fixed);
    }

    public static void main(String[] args) {
        try {
            Scanner s = new Scanner(System.in);
            String inputValues = s.nextLine(); // 读取输入
            System.out.print(solveMethod(inputValues)); // 输出解压缩后的结果
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("input error");
        }
    }
}